package cn.com.anypay.manager.common.constants;

/**
 * 通用常量类
 * 定义系统中使用的常量
 */
public final class CommonConstants {

    // 防止实例化
    private CommonConstants() {}

    // ================ 系统常量 ================

    /**
     * 系统名称
     */
    public static final String SYSTEM_NAME = "AnyPay Manager";

    /**
     * 默认字符编码
     */
    public static final String DEFAULT_CHARSET = "UTF-8";

    /**
     * 默认时区
     */
    public static final String DEFAULT_TIMEZONE = "Asia/Shanghai";

    // ================ 分页常量 ================

    /**
     * 默认页码
     */
    public static final int DEFAULT_PAGE_NUMBER = 1;

    /**
     * 默认页大小
     */
    public static final int DEFAULT_PAGE_SIZE = 10;

    /**
     * 最大页大小
     */
    public static final int MAX_PAGE_SIZE = 500;

    // ================ 状态常量 ================

    /**
     * 启用状态
     */
    public static final int STATUS_ENABLED = 1;

    /**
     * 禁用状态
     */
    public static final int STATUS_DISABLED = 0;

    /**
     * 删除状态
     */
    public static final int STATUS_DELETED = -1;

    // ================ 性别常量 ================

    /**
     * 性别：未知
     */
    public static final int GENDER_UNKNOWN = 0;

    /**
     * 性别：男
     */
    public static final int GENDER_MALE = 1;

    /**
     * 性别：女
     */
    public static final int GENDER_FEMALE = 2;

    // ================ 日期格式常量 ================

    /**
     * 日期格式：yyyy-MM-dd
     */
    public static final String DATE_FORMAT = "yyyy-MM-dd";

    /**
     * 时间格式：yyyy-MM-dd HH:mm:ss
     */
    public static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";

    /**
     * 时间戳格式：yyyyMMddHHmmss
     */
    public static final String TIMESTAMP_FORMAT = "yyyyMMddHHmmss";

    // ================ HTTP 头常量 ================

    /**
     * 请求追踪ID头
     */
    public static final String TRACE_ID_HEADER = "X-Trace-Id";

    /**
     * 用户代理头
     */
    public static final String USER_AGENT_HEADER = "User-Agent";

    /**
     * 内容类型头
     */
    public static final String CONTENT_TYPE_HEADER = "Content-Type";

    /**
     * JSON 内容类型
     */
    public static final String CONTENT_TYPE_JSON = "application/json";

    // ================ 缓存常量 ================

    /**
     * 默认缓存过期时间 (秒)
     */
    public static final long DEFAULT_CACHE_EXPIRE = 3600L;

    /**
     * 短期缓存过期时间 (5分钟)
     */
    public static final long SHORT_CACHE_EXPIRE = 300L;

    /**
     * 长期缓存过期时间 (24小时)
     */
    public static final long LONG_CACHE_EXPIRE = 86400L;

    // ================ 正则表达式常量 ================

    /**
     * 手机号正则
     */
    public static final String REGEX_MOBILE = "^1[3-9]\\d{9}$";

    /**
     * 邮箱正则
     */
    public static final String REGEX_EMAIL = "^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$";

    /**
     * 身份证号正则 (18位)
     */
    public static final String REGEX_ID_CARD = "^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$";

    // ================ 业务常量 ================

    /**
     * 默认密码
     */
    public static final String DEFAULT_PASSWORD = "123456";

    /**
     * 系统管理员ID
     */
    public static final Long SYSTEM_ADMIN_ID = 1L;
}